package com.ruoyi.project.cms.product.service;

import com.ruoyi.common.constant.ProductConstants;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.text.Convert;
import com.ruoyi.project.cms.product.domain.ProductStyle;
import com.ruoyi.project.cms.product.mapper.ProductMapper;
import com.ruoyi.project.cms.product.mapper.StyleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @CreateTime 2020/5/17 22:59
 */
@Service
public class StyleServiceImpl implements StyleService {
    @Autowired
    private StyleMapper styleMapper;
    @Autowired
    private ProductMapper productMapper;

    /**
     * 增改查中表单下拉框
     */
    @Override
    public List<ProductStyle> findAllName() {
        return styleMapper.selectAllName();
    }

    /**
     * 查询全部的产品风格信息
     */
    @Override
    public List<ProductStyle> findAll(ProductStyle style) {
        return styleMapper.selectAll(style);
    }

    /**
     * 校验名称是否唯一
     */
    @Override
    public String checkStyleNameUnique(ProductStyle style) {
        Long styleId = StringUtils.isNull(style.getStyleId()) ? -1L : style.getStyleId();
        ProductStyle info = styleMapper.checkStyleNameUnique(style.getStyleName());
        if (StringUtils.isNotNull(info) && info.getStyleId().longValue() != styleId.longValue())
        {
            return ProductConstants.PRODUCT_STYLE_NAME_NOT_UNIQUE;
        }
        return ProductConstants.PRODUCT_STYLE_NAME_UNIQUE;
    }

    /**
     * 添加风格信息
     */
    @Override
    public int addStyle(ProductStyle style) {
        return styleMapper.insertStyle(style);
    }

    /**
     * 根据ID查询
     */
    @Override
    public ProductStyle findStyleById(Long styleId) {
        return styleMapper.selectStyleById(styleId);
    }

    /**
     * 修改风格信息
     */
    @Override
    public int changeStyle(ProductStyle style) {
        return styleMapper.updateStyle(style);
    }

    /**
     * 批量删除风格信息
     */
    @Override
    public int removeStyleByIds(String ids) throws BusinessException
    {
        Long[] styleIds = Convert.toLongArray(ids);
        for (Long styleId : styleIds)
        {
            ProductStyle style = findStyleById(styleId);
            //当前业务层中这里循环校验的是 准备删除的风格名称 是否 已经在产品中进行使用了 给与一个参数2
            if (productMapper.selectIsUsing(styleId,2) > 0)
            {
                throw new BusinessException(String.format("%1$s:该风格正在使用,不能删除", style.getStyleName()));
            }
        }
        return styleMapper.deleteStyleByIds(styleIds);
    }
}
